package models
/*********************************************************/
/********************本文档为数据库结构文档******************/
/*************Device的数据结构******************/
/*********************version:1.0*************************/
/****Copyright (c) 2014年 许剑华. All rights reserved******/
/*********************************************************/
import (
	"github.com/astaxie/beego/orm"
	"time"
	//"fmt"
	//m "smart_home/controllers/dataType"
	//"github.com/astaxie/beego/validation"
)
//描述设备的数据结构
type Device struct {
	Id          	int64		`orm:"unique;auto"`
	Mac    			string
	ProductName		string
	DeviceType		string

}
//设备的控制记录
type DeviceConLog struct {
	Id          	int64	`orm:"unique;auto"`
	Mac    			string
	//ProductName		string
	OpType			string
	Model			int
	DeviceType		int
	TimeStamp		time.Time	`orm:"auto_now_add;type(datetime)"`
	User    		*User   `orm:"rel(fk)"` // OneToOne relation
}
//注册数据表
func init() {
	// 需要在init中注册定义的model
	orm.RegisterModel(new(Device),new(DeviceConLog))
}
//添加设备记录表
//@param 	data   *DeviceConLog      设备的控制记录
//@param   user   *User              控制设备的用户信息
//@return   	 记录的ID      返回的错误
//@return   	 error      返回的错误
func AddDeviceLog (data *DeviceConLog,user *User)(int64,error){
//	if err := checkUser(u); err != nil {
//		return 0, err
//	}
	o := orm.NewOrm()
	data.User = user
	id, err := o.Insert(data)
	return id, err
}
//通过设备类型获取设备记录表
//@param 	model   int      设备的控制记录
//@param   user   *User              控制设备的用户信息
//@return   	 记录的ID      返回的错误
//@return   	 error      返回的错误
func GetDeviceLogByModel (model int)(devices []DeviceConLog,count int64){
	o := orm.NewOrm()
	device := new(DeviceConLog)
	qs := o.QueryTable(device)
//	var offset int64
//	if page <= 1 {
//		offset = 0
//	} else {
//		offset = (page - 1) * page_size
//	}.Limit(page_size, offset)
	qs.Filter("Model",model).All(&devices)
	count, _ = qs.Count()
	return devices, count
}
func getDeviceLogByUser (user *User){

}


//获取所有的设备记录表
//@return  devices []DeviceConLog	 返回所有设备记录的数组
//@return  count 	 int64      返回记录的数量
func GetDeviceLog ()(devices []DeviceConLog,count int64){
	o := orm.NewOrm()
	device := new(DeviceConLog)
	qs := o.QueryTable(device)
	qs.All(&devices)
	count, _ = qs.Count()
	return devices, count
}

